package DAOs;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import Models.Veranstaltung;


public class VDAO {

	String CLASSNAME = "org.sqlite.JDBC";
	String datei;
	String CONNECTIONSTRING;


	/**
	 * @throws ClassNotFoundException
	 */
	public VDAO() throws ClassNotFoundException {
		try {
			Class.forName(CLASSNAME);
			datei = "Veranstalltungsplaner.db3";
			CONNECTIONSTRING = "jdbc:sqlite::resource:"+datei;
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private Veranstaltung create() {
		return new Veranstaltung();
	}

	/**
	 * @param veranstaltung
	 * Erstellt eine Veranstaltung
	 */
	public void insert(Veranstaltung veranstaltung) {
		Connection connect = null;
		PreparedStatement preparedStatement = null;
		try {
			connect =  DriverManager.getConnection(CONNECTIONSTRING);
			String sql = "INSERT INTO Veranstaltung (v_Name, v_Start_Uhrzeit, v_Datum, v_treffpunkt) VALUES (?, ?, ?, ?)";
			preparedStatement = connect.prepareStatement(sql);
			preparedStatement.setString(1, veranstaltung.getV_Name());
			preparedStatement.setString(2, veranstaltung.getV_Start_Uhrzeit());
			preparedStatement.setString(3, veranstaltung.getDatum());
			preparedStatement.setString(4, veranstaltung.getTreffpunkt());
			preparedStatement.executeUpdate();
			ResultSet resultSet = preparedStatement.getGeneratedKeys();
			resultSet.next();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				preparedStatement.close();
				connect.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}	
	}

	/**
	 * @param v_Id
	 * @return veranstaltung -- Zeigt eine Veranstaltung an
	 */
	Veranstaltung select(int v_Id) {
		Veranstaltung veranstaltung = null;
		Connection connect = null;
		PreparedStatement preparedStatement = null;

		try {
			connect =  DriverManager.getConnection(CONNECTIONSTRING);
			String sql = "Select * from veranstaltung where v_Id = ?";
			preparedStatement = connect.prepareStatement(sql);
			preparedStatement.setInt(1, v_Id);
			ResultSet resultSet = preparedStatement.executeQuery();
			// Inhalte des gefundenen Datensatzes in einem Objekt speichern.
			resultSet.next();
			veranstaltung = new Veranstaltung();
			veranstaltung.setV_ID(resultSet.getInt("v_ID"));
			veranstaltung.setV_Name(resultSet.getString("v_Name"));
			veranstaltung.setV_Start_Uhrzeit(resultSet.getString("v_Start_Uhrzeit"));
			veranstaltung.setDatum(resultSet.getString("datum"));
			veranstaltung.setTreffpunkt(resultSet.getString("treffpunkt"));
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				preparedStatement.close();
				connect.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}	

		return veranstaltung;
	}
}
